Prevent hidden variables from interfering with closures - #347
Merged
Conversation
Contributor
Author
|
Fixes #291 properly this time |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every div, span, and certain other constructions creates a hidden variable that's used for internal purposes.
These hidden variables should not be considered when determining if the inputs to a closure are bound or not.
For example, this source:
With the current compiler, it produces this:
Because the red and green spans introduce hidden variables that mean
( invoke-closure $ $ $)does not have fully-bound parameters.With this PR, those hidden variables are not included in the signature of
( invoke-closure $ $ $)and thus will not be considered by the optimizer. Thus, no warnings.This was previously reported as #291 and reported as fixed in #292 . However, that PR only fixed it for the debugger. This PR fixes it for the compiler as well.